﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AP.LUNA.DataAccess;
using AP.LUNA.DataEntities;
using AP.LUNA.Exceptions;
using AP.LUNA.Commons;

namespace AP.LUNA.BusinessLogic
{
    public class BLDesempenosComprension : BLAstract, IBusinessLogic<desempenoscomprension>
    {
        private LunaEntities context = null;
        public BLDesempenosComprension()
        {
            context = GetContext();
        }

        public List<desempenoscomprension> GetAll()
        {
            return context.desempenoscomprension.ToList();
        }

        public List<desempenoscomprension> GetbyAsignatura(int idAsignatura)
        {
            return context.desempenoscomprension.Include("Escalas").Include("periodos").Where(d => d.IdAsignatura == idAsignatura).ToList();
        }

        public desempenoscomprension GetbyId(int id)
        {
            throw new NotImplementedException();
        }

        public desempenoscomprension GetbyId(Guid id)
        {
            return context.desempenoscomprension.FirstOrDefault(dc => dc.Id == id);
        }

        public void Save(desempenoscomprension entidad)
        {
            try
            {
                context.desempenoscomprension.AddObject(entidad);
                context.SaveChanges();
            }
            catch (Exception exc)
            {
                Utils.WriteError(this.GetType().Name, exc);
                throw new LUNAExcepcion(ExceptionCode.ERROR_INESPERADO, string.Empty);
            }
        }

        public void Update(desempenoscomprension entidad)
        {
            try
            {
                context.desempenoscomprension.ApplyChanges(entidad);
                context.SaveChanges();
            }
            catch (Exception exc)
            {
                Utils.WriteError(this.GetType().Name, exc);
                throw new LUNAExcepcion(ExceptionCode.ERROR_INESPERADO, string.Empty);
            }
        }

        public void Delete(desempenoscomprension entidad)
        {
            try
            {
                context.desempenoscomprension.DeleteObject(entidad);
                context.SaveChanges();
            }
            catch (Exception exc)
            {
                Utils.WriteError(this.GetType().Name, exc);
                throw new LUNAExcepcion(ExceptionCode.ERROR_INESPERADO, string.Empty);
            }
        }
    }
}